<?xml version="1.0" encoding="utf-8"?>
<!--
                                                                                     
 h       t     t                ::       /     /                     t             / 
 h       t     t                ::      //    //                     t            // 
 h     ttttt ttttt ppppp sssss         //    //  y   y       sssss ttttt         //  
 hhhh    t     t   p   p s            //    //   y   y       s       t          //   
 h  hh   t     t   ppppp sssss       //    //    yyyyy       sssss   t         //    
 h   h   t     t   p         s  ::   /     /         y  ..       s   t    ..   /     
 h   h   t     t   p     sssss  ::   /     /     yyyyy  ..   sssss   t    ..   /     
                                                                                     
	<https://y.st./>
	Copyright © 2016 Alex Yst <mailto:copyright@y.st>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <https://www.gnu.org./licenses/>.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<base href="https://y.st./en/weblog/2016/02-February/05.xhtml" />
		<title>The spider seems to be running smoothly now &lt;https://y.st./en/weblog/2016/02-February/05.xhtml&gt;</title>
		<link rel="icon" type="image/png" href="/link/CC_BY-SA_4.0/y.st./icon.png" />
		<link rel="stylesheet" type="text/css" href="/link/basic.css" />
		<link rel="stylesheet" type="text/css" href="/link/site-specific.css" />
		<script type="text/javascript" src="/script/javascript.js" />
		<meta name="viewport" content="width=device-width" />
	</head>
	<body>
		<nav>
			<p>
				<a href="/en/">Home</a> |
				<a href="/en/a/about.xhtml">About</a> |
				<a href="/en/a/contact.xhtml">Contact</a> |
				<a href="/a/canary.txt">Canary</a> |
				<a href="/en/URI_research/"><abbr title="Uniform Resource Identifier">URI</abbr> research</a> |
				<a href="/en/opinion/">Opinions</a> |
				<a href="/en/coursework/">Coursework</a> |
				<a href="/en/law/">Law</a> |
				<a href="/en/a/links.xhtml">Links</a> |
				<a href="/en/weblog/2016/02-February/05.xhtml.asc">{this page}.asc</a>
			</p>
			<hr/>
			<p>
				Weblog index:
				<a href="/en/weblog/"><abbr title="American Standard Code for Information Interchange">ASCII</abbr> calendars</a> |
				<a href="/en/weblog/index_ol_ascending.xhtml">Ascending list</a> |
				<a href="/en/weblog/index_ol_descending.xhtml">Descending list</a>
			</p>
			<hr/>
			<p>
				Jump to entry:
				<a href="/en/weblog/2015/03-March/07.xhtml">&lt;&lt;First</a>
				<a rel="prev" href="/en/weblog/2016/02-February/04.xhtml">&lt;Previous</a>
				<a rel="next" href="/en/weblog/2016/02-February/06.xhtml">Next&gt;</a>
				<a href="/en/weblog/latest.xhtml">Latest&gt;&gt;</a>
			</p>
			<hr/>
		</nav>
		<header>
			<h1>The spider seems to be running smoothly now</h1>
			<p>Day 00335: Friday, 2016 February 05</p>
		</header>
<p>
	My task for today was to complete my <abbr title="Free Application for Federal Student Aid">FAFSA</abbr>.
	It went very smoothly.
	Of note, it was possible to leave the telephone number blank, despite that message I received that claimed that government forms usually require a telephone number even from people that do not have one.
</p>
<p>
	I ran into a bug before I went to bed last night in which the spider assumes that every normalized <abbr title="Uniform Resource Identifier">URI</abbr> has a host component, which was then triggered by the presence of a <abbr title="Uniform Resource Identifier">URI</abbr> using the <code>javascript:</code> scheme.
	I did not remember seeing that one on the <a href="https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml">official scheme list</a>, so I took another look.
	It is not listed! There are a bunch of schemes listed there that almost no one uses, yet the fairly-well-known <code>javascript:</code> scheme did not make the cut.
	In any case, I have repaired that bug in the spider.
	When I woke up, I found that a bug that I had intentionally coded into the spider had been set off as well.
	Namely, I programed it to assume that all <abbr title="Uniform Resource Identifier">URI</abbr>s that it finds are valid.
	My functions are designed to throw exceptions in case of malformed <abbr title="Uniform Resource Identifier">URI</abbr>s, but the spider was not designed to catch them.
	I knew that this bug would cause an issue eventually, I just did not realize that it would be so soon.
	Some people just do not know how to form a valid <abbr title="Uniform Resource Identifier">URI</abbr>, which I think is the case here, but also you should never trust user input.
	I hate to blindly ignore these bad <abbr title="Uniform Resource Identifier">URI</abbr>s, but I do not know what else to do.
	For now, the spider now tries to make sense of each <abbr title="Uniform Resource Identifier">URI</abbr>, but it the syntax is invalid, it catches the exception, outputs an error message that will not be seen as it will be buried in all the other output, then moves on to the next <abbr title="Uniform Resource Identifier">URI</abbr>.
	I suppose that I will need to start greping the log from now on.
</p>
<p>
	I wrote a couple of the new scheme-specific normalization functions, but then I decided to delete them and remove the callback hook from the main normalization function.
	This is starting to lead off on an unnecessary tangent.
	If someone wants to compare two <abbr title="Uniform Resource Identifier">URI</abbr>s for equivalence, they should probably use both the generic <abbr title="Uniform Resource Identifier">URI</abbr> normalization function and, if necessary, a scheme-specific <abbr title="Uniform Resource Identifier">URI</abbr> normalization function.
	I also removed the parts of the function that normalize the port component based on the default port of a given scheme and checks for the presence of <abbr title="Uniform Resource Identifier">URI</abbr> components that are required or forbidden by a given scheme as well.
	I considered leaving them, as at least the port normalization is useful to me, but they seem like they are outside the scope of the function.
	I need a function that can take the place of <abbr title="PHP: Hypertext Preprocessor">PHP</abbr>&apos;s broken <code>\parse_url()</code> function.
	The RFC 3986-specified normalization goes a bit beyond that, though it is quite useful when trying to keep a list of pages and sites that the spider has already visited and is generic enough to be useful in many cases.
	Anything scheme-specific is outside the scope of that function though and should be delegated to another function if that functionality is required.
</p>
<p>
	I received an email from eSmart reminding me to finish filing my taxes through them even though they have not had one of the supervisors get back to me.
	Because of their letter, I pestered them on Twitter a bit, as they included a link to their Twitter account in their email.
	On Twitter, they gave me the support email address! I doubt that I will pursue this, but if I wanted to, I have another method.
</p>
<p>
	It seems that my mother is going to Portland for some training and she will be dropping me off in Springfield along the way.
	There, I will work on cleaning up our former residence through Thursday, Friday, and Saturday.
	I may not have Internet access during that time though, so I may not update this weblog until I get back.
</p>
		<hr/>
		<p>
			Copyright © 2016 Alex Yst;
			You may modify and/or redistribute this document under the terms of the <a rel="license" href="/license/gpl-3.0-standalone.xhtml"><abbr title="GNU&apos;s Not Unix">GNU</abbr> <abbr title="General Public License version Three or later">GPLv3+</abbr></a>.
			If for some reason you would prefer to modify and/or distribute this document under other free copyleft terms, please ask me via email.
			My address is in the source comments near the top of this document.
			This license also applies to embedded content such as images.
			For more information on that, see <a href="/en/a/licensing.xhtml">licensing</a>.
		</p>
		<p>
			<abbr title="World Wide Web Consortium">W3C</abbr> standards are important.
			This document conforms to the <a href="https://validator.w3.org./nu/?doc=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F02-February%2F05.xhtml"><abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 5.1</a> specification and uses style sheets that conform to the <a href="http://jigsaw.w3.org./css-validator/validator?uri=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F02-February%2F05.xhtml"><abbr title="Cascading Style Sheets">CSS</abbr>3</a> specification.
		</p>
	</body>
</html>

